<?php
/**
 * 飞信机器人--功能插件--24点游戏
 * 功能：实现文章列表，查看指定文章，谜语模块
 * 数据表：fx_games_24point
 * 作者： Kelvin
 * 联系： msn:shichangguo@msn.com, qq:191848423
*/

class Game24Point extends CommonPlugin
{
	var $UUID='e29d9cf6-b2df-4590-b514-561394c4064c';
	
	public function Game24Point(&$session, $pid, $extraPara="")
	{
		parent::__construct($session, $pid, $extraPara);
	}
	
	private function setQuestionID($question_id)
	{
		$this->session->set("Game24Point", $question_id);
	}

	private function getQuestionID()
	{
		$id = $this->session->getValue("Game24Point");
		return $id;
	}
	
	public function getTips()
	{
		$msg = "<Font Face='楷体' Color='-16744320' Size='10.5'>24点游戏玩法：从扑克中任意抽出四张（数字表示为1－13），用加、减、乘、除、括号组成算式，使结果成为24点。输入s开始抽题\n</font>";
		$msg.= $this->getFooter(',s-抽题');
		return $msg;		
	}

	public function handle($input)
	{
		if( parent::handleInput($input)) return false;
					
		if( $input == 's' )	//开始答题
		{
			$id = 0;
			$retArr = array();
			while(1)
			{
				$id = rand(1,1000);
				$sql = "select * from fx_games_24point where id=$id";
				$retArr = $this->session->db->fetchQueryAll($sql);
				if( !empty($retArr[0]['nr']) )break;
			}
			$msg = "<Font Face='楷体' Color='-16744320' Size='10.5'>开动脑筋吧！四个数字分别是：</font>\n";
			$msg.= "<Font Face='楷体' Color='-8388608' Size='14.5'>{$retArr[0]['b1']},{$retArr[0]['b2']},{$retArr[0]['b3']},{$retArr[0]['b4']}</font>\n";
			$msg.= "<Font Face='楷体' Color='-16744320' Size='10.5'>把您的答案发给我，我来帮您运算，看是否正确。如输入 1+2/(3*4)</font>\n";
			$this->setQuestionID($id);
			$msg.= $this->getFooter(',s-抽题 v-查看答案');
			return $msg;
		}else if( $input == 'v') //看答案
		{
			$id = $this->getQuestionID();
			if($id==0)
				return "您还没有抽题！输入s抽题！";
			
			$sql = "select * from fx_games_24point where id=$id";
			$retArr = $this->session->db->fetchQueryAll($sql);
			
			$msg = "";
			$msg.= "<Font Face='楷体' Color='-8388608' Size='14.5'>{$retArr[0]['b1']},{$retArr[0]['b2']},{$retArr[0]['b3']},{$retArr[0]['b4']}</font>\n";
			$msg.= "<Font Face='楷体' Color='-16744320' Size='10.5'>正确答案是: {$retArr[0]['nr']}</font>\n";
			$msg.= $this->getFooter(',s-抽题 v-查看答案');
			return $msg;
		}else //做题
		{
			$id = $this->getQuestionID();
			if($id==0)return "您还没有抽题！输入s抽题！";
			
			$sql = "select * from fx_games_24point where id=$id";
			$retArr = $this->session->db->fetchQueryAll($sql);
			
			$input = str_replace("\n",'',$input);
			$input = str_replace("\r",'',$input);
				
			$allowChar = array('+','-','*','/',')','(');
			$msg = "";
			for($i=0; $i<strlen($input); $i++ )
			{
				$c = substr($input, $i, 1);
				if( !(is_numeric($c) || in_array($c, $allowChar)) )
				{
					$msg = "您输入的算式不正确，请重新输入";
					break;
				}
			}
			
			$input2 = "";
			for($i=0; $i<strlen($input); $i++)
			{
				$c = substr($input, $i, 1);
				if( is_numeric($c) )
					$input2.=$c;
				else
					$input2.=",";
			}
			
			$inputArr = explode(",", $input2);
			for($i=0; $i<count($inputArr); $i++)
			{
				if(empty($inputArr[$i]))continue;
				if( $inputArr[$i] == $retArr[0]['b1'] || 
					$inputArr[$i] == $retArr[0]['b2'] ||
					$inputArr[$i] == $retArr[0]['b3'] ||
					$inputArr[$i] == $retArr[0]['b4'] )continue;
				else 
				{
					$msg = "输入有误！";
					return  $msg.$this->getFooter(',s-抽题 v-查看答案');
				}
			}
			
			if( $msg == "" )
			{
				$str = '$value='.$input.';';
				
				try {
					eval($str);
					$msg = "您输入的算式结果是:{$value}。";
					if($value == 24 )
					{
						$msg .= "恭喜您，答对了！";
					}else {
						$msg .= "结果不正确，请再努力！";
					}
				}catch(Exception $e)
				{
					$msg = "您输入的算式非法！请重新输入";
				}
			}
			
			return $msg.$this->getFooter(',s-抽题 v-查看答案');
		}
		
		$msg.= $this->getFooter(',s-抽题');
		return $msg;
	}
	
}
?>